######### 调用示例 ###########
# sh run-ansible-k8s.sh
#
# 自动化集群部署Kubernetes
##############################

echo ">>> 安装依赖包..." && sleep 1
yum install -y net-tools wget git vim
echo ">>> 设置防火墙为lptables并设置空规则..." && sleep 1
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save 
echo ">>> 关闭SELINUX服务(非必须操作)..." && sleep 1
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
echo ">>> 关闭系统不需要的服务(非必须操作)..." && sleep 1
systemctl stop postfix && systemctl disable postfix 

# Centos7 修改ali yum源，此操作可以加速k8s安装过程，否则从国外源下载资源会非常慢
if [ ! -f /etc/yum.repos.d/CentOS-Base.repo.bak ];then
  echo ">>> 1. 修改本机的 yum 源为阿里源地址，以加快集群部署中资源下载速度..." && sleep 1
  echo ">>>   备份原repo文件到：/etc/yum.repos.d/CentOS-Base.repo.bak" && sleep 1
  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  echo ">>>    已完成更改 yum 源地址操作，正在清理缓存并重新生成缓存..." && sleep 1
  yum clean all && yum makecache fast && yum update
fi

echo ">>> 2. 安装Ansible自动化装配软件，可能需要较长时间，请耐心等待...." && sleep 2
if [ ! -d kubeadm-ha ];then
  git clone https://gitee.com/open-hand/kubeadm-ha.git && sleep 2
fi
cd kubeadm-ha
sh install-ansible.sh
echo ">>>    Install ansible completed"

echo ">>> 3. 开始部署K8S集群..."
echo ">>>    从example中复制配置文件到：inventory.ini" && sleep 1
if [ ! -f inventory.ini ];then
  cp example/hosts.allinone.ip.ini inventory.ini
fi
echo ">>>    编辑集群安装配置文件：inventory.ini" && sleep 3
vim inventory.ini
echo ">>>    开始执行集群安装程序，可能需要较长时间，请耐心等待...." && sleep 2
if [ ! -f init.lock ];then
  touch init.lock
  ansible-playbook -i inventory.ini 90-init-cluster.yml
else
  # 如果部署失败，想要重置集群，执行：
  echo ">>>    开始执行重置集群安装程序，可能需要较长时间，请耐心等待........"
  ansible-playbook -i inventory.ini 99-reset-cluster.yml
fi
echo ">>>     Complete init cluster"

echo ">>> 4. 安装NFS网络存储作为数据持久化..." && sleep 1
echo ">>>    Start install NFS Server..."
yum -y install nfs-utils rpcbind
mkdir -p /data && echo "/data *(rw,no_root_squash,sync)" > /etc/exports && exportfs -r
systemctl enable nfs-server && systemctl restart nfs-server
echo ">>>    Install NFS completed"
echo ">>>    查询NFS服务器的相关信息：showmount -e"
showmount -e
